Network booting is a process of booting a network client, such as a client computer, from a network rather than from a local drive of the computer. Thus, network booting involves the network client receiving and loading an initial network bootstrap program or software from the network, wherein this initial software program or application (hereinafter, “NB software”) is provided by a network host, such as a host server, on the network. Typically, the NB software application includes an Operating System (OS) image. Other software applications may be included in the initial software for execution by the network client as well.
A major issue in a network booting environment or system having multiple clients is the ability to sufficiently provide network booting to such clients when needed. This is especially true for a network system, such as an information technology (IT) enterprise-wide network or system, wherein network booting is desired or required for thousands of network clients at once, and the initial software for network booting may be large due to the required size of the OS image and any other software application therein. Traditionally, the NB software is network loaded onto a network client from a network host through a Pre-boot Execution Environment (PXE or “pixie”) boot using, for example, Trivial File Transfer Protocol (TFTP). PXE boot requires special servers that respond to network clients who are requesting a boot image. In a typical PXE boot, network clients may find or identify one or more network hosts that act as PXE boot servers by broadcasting or multicasting a Bootstrap Protocol (BootTP) or by a Dynamic Host Configuration Protocol (DHCP) request. The BootTP is a User Datagram Protocol (UDP) that may be employed by a network client to automatically obtain its Internet Protocol (IP) address from a network host that handles the network booting. Likewise, DHCP is another network protocol that may be employed by the network client to automatically obtain its IP address from the network host.
There is a desire to avoid what is known as the “slashdot effect,” whereby a PXE boot server, such as a network host, or any other source or seed of the NB software, is inundated with multiple requests for network booting. This slashdot effect creates a scalability problem for traditional methods of network booting, wherein the NB software is centralized at one or more network hosts that provide network booting. In turn, each network host must have sufficient computing power and the network system must have sufficient bandwidth to accommodate network booting requests from the network clients. As more clients are connected to the hosts or the size of the NB software increases, infrastructure costs are incurred to necessarily upgrade the processing power of the network hosts and to increase the system bandwidth to accommodate the increased network traffic. This scalability problem is especially pronounced in, for example, an IT enterprise-wide network or data center that employs machine virtualization. In such a system, while there are only a few thousand nodes in the IT enterprise-wide network, such nodes may effectively run tens of thousand of virtual nodes that may require network booting to bring online. This kind of scale creates multiple localized slashdot effects within the IT enterprise-wide network.
Peer-to-peer, or P2P, file sharing technologies long have been used to support the sharing of large amounts of content between a potentially large community of nodes or users. Torrent-based P2P file sharing systems, such as BitTorrent, KTorrent, pTorrent, and BitComet, have emerged as systems of choice for distributing very large amounts of content across a data network such as the Internet. These P2P systems have allowed non-profit and open source organizations to avoid deploying large server farms and instead rely on a small number of mirror sites for content distribution to a P2P network.